Java项目:在线网盘文件分享系统(java+springboot+freemark+jpa+MySQL+maven)

您所在的位置:网站首页 百度网盘文件夹分享后 更新怎么取消啊 Java项目:在线网盘文件分享系统(java+springboot+freemark+jpa+MySQL+maven)

Java项目:在线网盘文件分享系统(java+springboot+freemark+jpa+MySQL+maven)

2024-07-14 10:28:11| 来源: 网络整理| 查看: 265

springboot+freemark+jpa+MySQL实现的在线网盘文件分享系统,其功能跟百度网盘非常类似,普通用户可以注册登录,注册后默认分配1G的空间大小,登录进去后可以新建文件夹、上传各种类型的文件、文件移动、复制、下载、删除、分享,分享分为私密分享和公开分享,还可以设置分享过期时间,打开分享链接后可以对文件进行查看、下载、保存到自己网盘等。超级管理员登录后可以设置普通用户的空间大小、角色类型、权限等。

本系统主要涉及的特色功能有:

1:系统在上传文件时自动计算文件的md5值,并且检查该值是否存在,若存在则文件不再上传到服务器,直接进行引用原有的文件。

2:定时器定时检查限时分享的文件是否过期。

3:网盘目录结构可无限制层级创建,保存移动复制文件时递归所选文件夹层级等等。

使用技术:java+springboot+freemark+jpa+MySQL+maven 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 管理员控制器: /**

@ClassName: AdminController

@Description: 管理员控制器 **/ @Controller public class AdminController extends BaseController { private Logger logger = LogUtils.getInstance(AdminController.class);

/**

@Description 前往用户管理页面 **/ @GetMapping("/manages-users") public String manageUsers(Map map,Integer cur){ if (loginUser.getRole() == 1){ //用于无访问权限 logger.error(“当前登录用户:”+loginUser.getUserName()+“无管理员权限!”); return “redirect:/error401Page”; } //获取全部的用户 Integer usersCount = userService.getUsersCount(); //获取当前查询的页数,如果为空,默认为0 cur = (cur == null || cur //更新成功,返回200状态码 logger.info(“修改用户”+userService.queryById(uId).getUserName()+":的权限和仓库大小成功!"); return “200”; }else { //更新失败,返回500状态码 logger.error(“修改用户”+userService.queryById(uId).getUserName()+":的权限和仓库大小失败!"); return “500”; } }

/**

@Description 删除用户 **/ @GetMapping("/deleteUser") public String deleteUser(Integer uId,Integer cur){ cur = (cur == null || cur < 0)?1:cur; User user = userService.queryById(uId); FileStore fileStore = fileStoreService.getFileStoreByUserId(uId); List folders = fileFolderService.getRootFoldersByFileStoreId(fileStore.getFileStoreId()); //迭代删除文件夹 for (FileFolder f:folders) { deleteFolderF(f); } List files = myFileService.getRootFilesByFileStoreId(fileStore.getFileStoreId()); //删除该用户仓库根目录下的所有文件 for (MyFile f:files) { String remotePath = f.getMyFilePath(); String fileName = f.getMyFileName()+f.getPostfix(); //从FTP文件服务器上删除文件 boolean b = FtpUtil.deleteFile("/"+remotePath, fileName); if (b){ //删除成功,返回空间 fileStoreService.subSize(f.getFileStoreId(),Integer.valueOf(f.getSize())); //删除文件表对应的数据 myFileService.deleteByFileId(f.getMyFileId()); } logger.info(“删除文件成功!”+f); } if (FtpUtil.deleteFolder("/" + uId)){ logger.info(“清空FTP上该用户的文件成功”); }else { logger.error(“清空FTP上该用户的文件失败”); } userService.deleteById(uId); fileStoreService.deleteById(fileStore.getFileStoreId()); return “redirect:/manages-users?cur=”+cur; }

/**

@Description 迭代删除文件夹里面的所有文件和子文件夹 / public void deleteFolderF(FileFolder folder){ //获得当前文件夹下的所有子文件夹 List folders = fileFolderService.getFileFolderByParentFolderId(folder.getFileFolderId()); //删除当前文件夹的所有的文件 List files = myFileService.getFilesByParentFolderId(folder.getFileFolderId()); if (files.size()!=0){ for (int i = 0; i < files.size(); i++) { Integer fileId = files.get(i).getMyFileId(); boolean b = FtpUtil.deleteFile("/"+files.get(i).getMyFilePath(), files.get(i).getMyFileName() + files.get(i).getPostfix()); if (b){ myFileService.deleteByFileId(fileId); fileStoreService.subSize(folder.getFileStoreId(),Integer.valueOf(files.get(i).getSize())); } } } if (folders.size()!=0){ for (int i = 0; i < folders.size(); i++) { deleteFolderF(folders.get(i)); } } fileFolderService.deleteFileFolderById(folder.getFileFolderId()); } } 文件仓库控制器:/

@ClassName: FileStoreController

@Description: 文件仓库控制器 **/ @Controller public class FileStoreController extends BaseController { private Logger logger = LogUtils.getInstance(FileStoreController.class);

/**

@Description 上传临时文件 **/ @PostMapping("/uploadTempFile") public String uploadTempFile(@RequestParam(“file”) MultipartFile file,String url) { session.setAttribute(“imgPath”,“https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=2654852821,3851565636&fm=26&gp=0.jpg”); String name = file.getOriginalFilename().replaceAll(" “,”"); if (!checkTarget(name)){ logger.error(“临时文件上传失败!文件名不符合规范…”); session.setAttribute(“msg”, “上传失败!文件名不符合规范”); return “redirect:/temp-file”; } SimpleDateFormat format = new SimpleDateFormat(“yyyy-MM-dd”); String dateStr = format.format(new Date()); String path = “temp/”+dateStr +"/"+UUID.randomUUID(); try { if (FtpUtil.uploadFile("/"+path, name, file.getInputStream())){ //上传成功 logger.info(“临时文件上传成功!”+name); String size = String.valueOf(file.getSize()); TempFile tempFile = TempFile.builder().fileName(name).filePath(path).size(size).uploadTime(new Date()).build(); if (tempFileService.insert(tempFile)) { try { String id = UUID.randomUUID().toString(); String p = request.getSession().getServletContext().getRealPath("/user_img/"); Long t = tempFile.getUploadTime().getTime(); url = url+"/file/share?t="+ UUID.randomUUID().toString().substring(0,10) +"&f="+tempFile.getFileId()+"&p="+size+"&flag=2"; File targetFile = new File(p, “”); if (!targetFile.exists()) { targetFile.mkdirs(); } F


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭